﻿using System;
using System.Data;
using System.Data.SqlClient;
using System.Web.UI;
using Microsoft.Web.UI.WebControls;
using UDS.Components;

namespace UDS.SubModule.UnitiveDocument.MoveTeam
{
    /// <summary>
    /// TreeView 的摘要说明。
    /// </summary>
    [CLSCompliant(false)]
    public partial class TreeViewPage : Page
    {
        protected String Action = "";
        protected DataTable dataTbl1, dataTbl2;
        public String FromID = "";
        public String ToID = "";

        protected override void OnLoad(EventArgs e)
        {
            FromID = (Request.QueryString["FromID"] != null) ? Request.QueryString["FromID"] : "";
            if (!Page.IsPostBack)
            {
                Action = (Request.QueryString["Action"] != null) ? Request.QueryString["Action"] : "";

                if (Action == "1")
                {
                    ToID = (Request.QueryString["ToID"] != null) ? Request.QueryString["ToID"] : "";
                    var prj = new ProjectClass();
                    prj.Remove(Int32.Parse(FromID), Int32.Parse(ToID));
                    Response.End();
                }
                InitRootNodeDataTable();
                InitTreeRootNode(teamTreeView.Nodes);
                //InitTree(TreeView1.Nodes,"0");
            }

            base.OnLoad(e);
        }

        /// <summary>
        /// 初始化 RootNode DataTable
        /// </summary>
        private void InitRootNodeDataTable()
        {
            var data = new Database();
            String username = SiteContext.Current.UserName;
            var prams = new[]
            {
                Database.MakeInParam("@UserName", SqlDbType.NVarChar, 20, username),
                Database.MakeInParam("@RightCode", SqlDbType.Int, 1, 1),
                Database.MakeInParam("@IncludeFunctionNode", SqlDbType.Int, 1, 0)
            };
            using (SqlDataReader dataReader = data.RunDataReader("dbo.sproc_GetShowClass_V2", prams))
            {
                dataTbl1 = Tools.ConvertDataReaderToDataTable(dataReader);
                dataTbl1.TableName = "TreeView";
            }
        }

        /// <summary>
        /// 初始化 ChildNode DataTable
        /// </summary>
        private void InitChildNodeDataTable(int ClassParentID)
        {
            var data = new Database();
            var prams = new[]
            {
                Database.MakeInParam("@Class_id", SqlDbType.Int, 20, ClassParentID)
            };

            using (var dataReader = data.RunDataReader("dbo.sproc_GetAllChildClass_V2", prams))
            {
                dataTbl2 = Tools.ConvertDataReaderToDataTable(dataReader);
                dataTbl2.TableName = "TreeView";
            }
        }

        /// <summary>
        /// 初始化TreeView 的 RootNode
        /// </summary>
        private void InitTreeRootNode(TreeNodeCollection TNC)
        {
            DataView dataView = dataTbl1.Copy().DefaultView;
            dataView.RowFilter = "ClassParentID = ClassID";
            foreach (DataRowView drv in dataView)
            {
                var tn = new TreeNode();
                tn.ID = drv["ClassID"].ToString();
                tn.Text = drv["ClassName"].ToString();
                tn.ImageUrl = GetIcon(drv["ClassType"].ToString());
                //tn.NavigateUrl = "# onclick='alert('dddd')'";
                //tn.Target      = "self";
                TNC.Add(tn);
                InitChildNodeDataTable(Int32.Parse(tn.ID));
                InitTreeChildNode(tn.Nodes, tn.ID);
            }
            dataTbl1 = null;
            dataTbl2 = null;
        }

        /// <summary>
        /// 初始化TreeView 的 ChildNode
        /// </summary>
        private void InitTreeChildNode(TreeNodeCollection TNC, string classParentID)
        {
            DataView dataView = dataTbl2.Copy().DefaultView;
            dataView.RowFilter = "ClassParentID = " + classParentID + "";
            foreach (DataRowView drv in dataView)
            {
                var tn = new TreeNode();
                tn.ID = drv["ClassID"].ToString();
                tn.Text = drv["ClassName"].ToString();
                tn.ImageUrl = GetIcon(drv["ClassType"].ToString());
                //tn.NavigateUrl = "#";
                //tn.Target      = "parent";
                TNC.Add(tn);
                InitTreeChildNode(tn.Nodes, tn.ID);
            }
        }

        #region 获取节点图标

        /// <summary>
        /// 获取节点图标
        /// </summary>
        private static string GetIcon(string ClassType)
        {
            string rtnValue = "../../../DataImages/";
            switch (ClassType)
            {
                case "0":
                    rtnValue += "flag.gif";
                    break;
                case "1":
                    rtnValue += "myDoc.gif";
                    break;
                case "2":
                    rtnValue += "mail.gif";
                    break;
                case "3":
                    rtnValue += "page.gif";
                    break;
                case "4":
                    rtnValue += "staff.gif";
                    break;
                case "5":
                    rtnValue += "help_page.gif";
                    break;
                case "6":
                    rtnValue += "MyTask.gif";
                    break;
                case "7":
                    rtnValue += "mail.gif";
                    break;
                case "8":
                    rtnValue += "myDoc.gif";
                    break;
                case "9":
                    rtnValue += "DocFlow.gif";
                    break;
                case "10":
                    rtnValue += "ClientManage.gif";
                    break;
                case "11":
                    rtnValue += "myLinkman.gif";
                    break;
                case "12":
                    rtnValue += "position.gif";
                    break;
                case "13":
                    rtnValue += "role.gif";
                    break;
                case "14":
                    rtnValue += "kaoqin.gif";
                    break;
                default:
                    rtnValue += "red_ball.gif";
                    break;
            }
            return rtnValue;
        }

        #endregion

#if false
        #region 将DataReader 转为 DataTable

        /// <summary>
        /// 将DataReader 转为 DataTable
        /// </summary>
        /// <param name="dataReader">DataReader</param>
        public DataTable ConvertDataReaderToDataTable(SqlDataReader dataReader)
        {
            var datatable = new DataTable();
            DataTable schemaTable = dataReader.GetSchemaTable();
            //动态添加列
            foreach (DataRow myRow in schemaTable.Rows)
            {
                var myDataColumn = new DataColumn();
                myDataColumn.DataType = Type.GetType("System.String");
                myDataColumn.ColumnName = myRow[0].ToString();
                datatable.Columns.Add(myDataColumn);
            }
            //添加数据
            while (dataReader.Read())
            {
                DataRow myDataRow = datatable.NewRow();
                for (int i = 0; i < schemaTable.Rows.Count; i++)
                {
                    myDataRow[i] = dataReader[i].ToString();
                }
                datatable.Rows.Add(myDataRow);
            }
            return datatable;
        }

        #endregion
#endif
    }
}